package thread;

/**
 * java中所有的代码都是靠线程运行的，main方法也不例外，运行main方法的线程是系统创建的，并且起名为main
 * 我们自己定义的线程如果不指定名字，默认叫Thread-x，x是一个数字，从0开始。
 *
 * static Thread currentThread()
 * 线程提供了一个静态方法currentThread，可以获取运行这个方法的线程
 */
public class CurrentThreadDemo {
    public static void main(String[] args) {
        //获取运行main方法的线程
        Thread main = Thread.currentThread();
        System.out.println("运行main方法的线程是："+main);//运行main方法的线程是：Thread[main,5,main]
        dosome();//运行dosome方法的线程是：Thread[main,5,main]
        //任何在main方法中运行的方法都是main方法的线程运行的
        //让主线程在创建一条线程，并将其启动，与主线程并发运行
        Thread t = new Thread(){
            public void run(){//线程改变，与main方法并发运行，”同时“发生
                //获取的是自定义线程
                Thread r = Thread.currentThread();
                System.out.println("自定义线程："+r);//自定义线程：Thread[Thread-0,5,main]
                dosome();//运行dosome方法的线程是：Thread[Thread-0,5,main]
                for(int i=0;i<100;i++){
                    System.out.println(r+"循环了"+i+"次");
                }
                System.out.println(r+"线程结束");

            }
        };
        t.start();//t线程一旦start后，该线程中的run方法就和main方法下面的代码并发运行了

        for(int i=0;i<100;i++){
            System.out.println(main+"循环了"+i+"次");
        }
        System.out.println(main+"线程结束");

    }
    public static void dosome(){
        //获取运行dosome方法的线程
        Thread t = Thread.currentThread();
        System.out.println("运行dosome方法的线程是："+t);
    }
}
